iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0
自我挑戰組

資料結構系列 第 1

【Data Structure】Day1: 前言、演算法(Algorithm)五大原則

  • 分享至 

  • xImage
  •  

前言

大家好,小弟我目前資管系大四
正在準備研究所中
希望透過連續 30 天發文
讓自己對DS的內容可以更加深印象
也希望可以幫助到想學習資料結構的人 一點點點點點點點點的小忙/images/emoticon/emoticon25.gif

進入今天的主題:演算法

甚麼是演算法?

演算法(Algorithm)是指:在解決特定的問題時,「有限步驟」的集合
聽定義感覺很模糊,到底甚麼是演算法?
那就要從演算法的5大標準(criteria)說起囉,只要不滿足其中一個,就不能稱為演算法了

  1. 輸入(Input):輸入的資料量必須 >= 0 筆資料(也就是說可以不用有輸入資料)
  2. 輸出(Output):輸出的資料量必須 >= 1 筆資料(也就是說一定要有輸出資料)
  3. 明確性(Definiteness):每個步驟都必須清楚明瞭,不能是模糊的
    基本上 algorithm 是沒有一個固定的標準和規範的,愛怎麼寫怎麼寫,但是:
    就是要夠清楚!!!!!
    基本上會使用流程圖或虛擬碼(pseudo code)來寫
    但其實你要把虛擬碼寫成中文也沒人管,只要讓人看得懂就可以!
  4. 有限性(Finiteness):在追蹤或執行 N 個 steps 之後就必須終止(terminate)
    這也是 algorithm 和 program 最大的區別,program 可以允許無窮迴圈(infinite loop),或有些 program 根本不會停下來(e.g. 保全系統)。
    但,演算法不允許!
  5. 有效性(effectiveness):每個指令必須要夠基本,人必須要可以有效追蹤
    這裡的"有效"不是指演算法很有效喔,而是指有效追蹤的意思,我相信大家都有用紙筆追蹤的經驗吧!這就是有效性喔!

明天來講 Recursive function


下一篇
【Data Structure】Day2: 遞迴(Recursion)
系列文
資料結構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言